QEMU入门指南 |
您所在的位置:网站首页 › qemu 启动命令参数详解 › QEMU入门指南 |
文章目录
前言什么是QEMUQEMU的再认识QEMU的安装与下载QEMU的源码安装
QEMU源码结构参考
前言
我们在openstack中会经常使用很多镜像,比如row,row2等。openstack底层支持的虚拟机很多。而qemu就是其中佼佼者,性能,速度,适用性都比较高。特殊情况时,我们无法直接使用openstack创建或者修改镜像,就可以利用qemu,在单机环境下创建镜像,并上传到openstack使用。同时由于qemu出色的性能,即使单独作为一种创建虚拟机的工具来使用,也很不错。 本文分为三个部分,第一部分主要介绍了qemu是什么,给人一个基本印象。第二部分重点介绍其安装。第三部分介绍其架构,这对我们的进一步使用有比较大的好处。 什么是QEMUQEMU是一种通用的开源计算机仿真器和虚拟器。QEMU共有两种操作模式 全系统仿真:能够在任意支持的架构上为任何机器运行一个完整的操作系统 用户模式仿真:能够在任意支持的架构上为另一个Linux/BSD运行程序 同时当进行虚拟化时,QEMU也可以以接近本机的性能运行KVM或者Xen。 QEMU的再认识具体来说,当作为机器仿真器使用时,QEMU可以通过动态代码翻译机制(dynamic translation)在不同的机器上仿真任意一台机器(例如ARM板),并执行不同于主机架构的代码。同时由于动态代码翻译机制,它也能够实现不错的性能。 而当QEMU用作虚拟器时,QEMU的优点在于其实纯软件实现的虚拟化模拟器,几乎可以模拟任何硬件设备,但是也正因为QEMU是纯软件实现的,因此所有指令都需要QEMU转手,因此会严重的降低性能。而可行的办法是通过配合KVM或者Xen来进行加速,目前肯定是以KVM为主。KVM 是硬件辅助的虚拟化技术,主要负责 比较繁琐的 CPU 和内存虚拟化,而 QEMU 则负责 I/O 虚拟化,两者合作各自发挥自身的优势,相得益彰。 QEMU的wiki上这样说道:虽然QEMU本身是通过软件来模拟计算机,但是它也能够使用其他虚拟化技术进行加速。在Xen虚拟机管理程序下执行或在Linux中使用KVM内核模块时,QEMU支持虚拟化。当使用KVM,QEMU可以虚拟化x86架构,服务器和嵌入式 PowerPC,64位POWER,S390,32位和64位的ARM和MIPS guests等。 QEMU的安装与下载qemu的安装与下载并不复杂,三个版本上安装都比较方便,你可以直接参考官方页面。或者按照我下边的方法进行操作亦可。或者你也可以翻到再下边的源码安装。 官方文档可在此处下载QEMU的各个版本:http : //www.qemu.org/download/,同时该页面也介绍了QEMU在不同操作系统的安装方法。你也可以直接参考下面的方法进行安装和使用。 Windows QEMU提供了Windows的32位和64位安装包。 不过Windows上qemu的性能不佳,这主要是其架构问题,在Windows上将无法使用其他专门负责虚拟化的工具进行加速,因此更好地方式是运行于Ubuntu之上,然后,借用kvm进行有效的加速,而如果需要使用kvm,则需要还需要安装qemu-kvm。 QEMU-KVM,是QEMU的一个特定于KVM加速模块的分支,里面包含了很多关于KVM的特定代码,与KVM模块一起配合使用。不过目前QEMU-KVM已经与QEMU合二为一,所有特定于KVM的代码也都合入了QEMU,当需要与KVM模块配合使用的时候,只需要在QEMU命令行加上 --enable-kvm就可以。 Ubuntu 安装方法如下 sudo apt install qemu sudo apt install kvm libvirt-clients # 检查是否已经安装kvm # egrep -o '(vmx|svm)' /proc/cpuinfo # 使用kvm启动镜像 sudo kvm -hda gxzy-tf-win7.qcow2 -m 8192 -smp 4 # 检查正在运行的镜像 # virsh -c qemu:///system list或者,我们也可以直接使用qemu的命令进行操作,使用kvm加速只需要再加上--enable-kvm。 Linux各个版本安装命令 在大部分Linux系统中,QEMU都可以通过安装包的形式进行安装。不过由于原生的QEMU性能不佳,因此也可以直接使用qemu-kvm进行操作。目前qemu已经集成了该组件, Arch: pacman -S qemuDebian/Ubuntu: apt-get install qemuFedora: dnf install @virtualizationGentoo: emerge --ask app-emulation/qemuRHEL/CentOS: yum install qemu-kvmSUSE: zypper install qemumacOS QEMU can be installed from Homebrew:brew install qemu QEMU can be installed from MacPorts:sudo port install qemu QEMU的源码安装QEMU提供了多个版本的源码,你可以在QEMU全版本源码列表下载有关版本。或者使用以下代码进行安装: wget https://download.qemu.org/qemu-4.2.0.tar.xz tar xvJf qemu-4.2.0.tar.xz cd qemu-4.2.0 ./configure make又或者,我们可以直接从git上下载和编译QEMU: git clone https://git.qemu.org/git/qemu.git cd qemu git submodule init git submodule update --recursive ./configure makeconfigure 脚本用于生成 Makefile,其选项可以用 ./configure --help 查看。 这里使用到的选项含义如下: –enable-kvm:编译 KVM 模块,使 Qemu 可以利用 KVM 来访问硬件提供的虚拟化服务。–enable-vnc:启用 VNC。–enalbe-werror:编译时,将所有的警告当作错误处理。–target-list:选择目标机器的架构。默认是将所有的架构都编译,但为了更快的完成编译,指定需要的架构即可。安装好之后,会生成如下应用程序: 之后通过创建虚拟机操作来对这些工具有个初步的认识。有关内容可以参考我的另外一篇博客Windows下QEMU的安装与使用------留坑暂未填坑,或者一文读懂QEMU虚拟机 QEMU源码结构Qemu 软件虚拟化实现的思路是采用二进制指令翻译技术,主要是提取 guest 代码,然后将其翻译成 TCG 中间代码,最后再将中间代码翻译成 host 指定架构的代码,如 x86 体系就翻译成其支持的代码形式,ARM 架构同理。 所以,从宏观上看,源码结构主要包含以下几个部分: /vl.c:最主要的模拟循环,虚拟机环境初始化,和 CPU 的执行。/target-arch/translate.c:将 guest 代码翻译成不同架构的 TCG 操作码。/tcg/tcg.c:主要的 TCG 代码。/tcg/arch/tcg-target.c:将 TCG 代码转化生成主机代码。/cpu-exec.c:主要寻找下一个二进制翻译代码块,如果没有找到就请求得到下一个代码块,并且操作生成的代码块。其中,涉及的主要几个函数如下: 知道了这个总体的代码结构,再去具体了解每一个模块可能会相对容易一点。 参考 QEMU 官网下载网页QEMU官方文档QEMU 维基百科一文读懂Qemu模拟器 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |